//package com.hxl.utils;
//
//import io.minio.MinioClient;
//import io.minio.ObjectStat;
//import io.minio.Result;
//import io.minio.errors.MinioException;
//import io.minio.messages.Item;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//import org.xmlpull.v1.XmlPullParserException;
//
//import java.io.IOException;
//import java.net.URL;
//import java.security.InvalidKeyException;
//import java.security.NoSuchAlgorithmException;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * minio工具类
// * @author 言凉
// */
//@Component
//public class UploadMinioUtil {
//    @Value("${minio.access-key}")
//    private String accessKey;
//    @Value("${minio.secret-key}")
//    private String secretKey;
//    @Value("${minio.bucket}")
//    private String bucketName;
//    @Value("${minio.host}")
//    private String host;
//    @Value("${minio.url}")
//    private String url;
//    @Value("${minio.expires}")
//    private int expires;
//
//    /**
//     * 上传文件至Minio文件系统
//     *
//     * @param objectName 存在Minio系统中的路径
//     * @param filePath   上传文件的路径
//     * @return
//     * @throws NoSuchAlgorithmException
//     * @throws IOException
//     * @throws InvalidKeyException
//     * @throws XmlPullParserException
//     */
//    public String uploadFileMinio(String objectName, String filePath) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException {
//        String fileUrl = "";
//        try {
//            // 使用Minio服务的URL，端口，Access key和Secret key创建一个MinioClient对象
//            MinioClient minioClient = new MinioClient(host, accessKey, secretKey);
//
//            // 检查存储桶是否已经存在
//            boolean isExist = minioClient.bucketExists(bucketName);
//            if (isExist) {
//                System.out.println("Bucket already exists.");
//            } else {
//                // 创建一个名为asiatrip的存储桶，用于存储照片的zip文件。
//                minioClient.makeBucket(bucketName);
//            }
//
//            // 使用putObject上传一个文件到存储桶中。
//            minioClient.putObject(bucketName, objectName, filePath);
//            // 返回对象名
//            fileUrl = objectName;
//        } catch (MinioException e) {
//            e.printStackTrace();
//        }
//
//        return fileUrl;
//    }
//
//    /**
//     * 查询Minio文件系统中文件的url
//     *
//     * @param objectName 文件路径
//     * @return
//     * @throws NoSuchAlgorithmException
//     * @throws IOException
//     * @throws InvalidKeyException
//     * @throws XmlPullParserException
//     * @throws MinioException
//     */
//    public String getFileMinio(String objectName) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException, MinioException {
//        String newFileUrl = "";
//        try {
//            // 使用Minio服务的URL，端口，Access key和Secret key创建一个MinioClient对象
//            MinioClient minioClient = new MinioClient(host, accessKey, secretKey);
//
//            // 使用putObject上传一个文件到存储桶中。
//            String fileUrl = minioClient.presignedGetObject(bucketName, objectName, 60 * expires);
//            URL u = new URL(fileUrl);
//            String file = u.getFile();
//            newFileUrl = url + file;
//        } catch (MinioException e) {
//            e.printStackTrace();
//        }
//        return newFileUrl;
//    }
//
//    /**
//     * 查询Minio文件系统中文件是否存在
//     *
//     * @param objectName
//     * @return
//     * @throws NoSuchAlgorithmException
//     * @throws IOException
//     * @throws InvalidKeyException
//     * @throws XmlPullParserException
//     * @throws MinioException
//     */
//    public Boolean statFileMinio(String objectName) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException, MinioException {
//        Boolean isExist = false;
//        try {
//            // 使用Minio服务的URL，端口，Access key和Secret key创建一个MinioClient对象
//            MinioClient minioClient = new MinioClient(host, accessKey, secretKey);
//            // 获得对象的元数据。
//            ObjectStat objectStat = minioClient.statObject(bucketName, objectName);
//            isExist = true;
//        } catch (MinioException e) {
//            e.printStackTrace();
//            isExist = false;
//        }
//
//        return isExist;
//    }
//
//    /**
//     * 删除Minio文件系统中的文件
//     *
//     * @param objectName 文件路径
//     * @throws NoSuchAlgorithmException
//     * @throws IOException
//     * @throws InvalidKeyException
//     * @throws XmlPullParserException
//     * @throws MinioException
//     */
//    public void deleteFileMinio(String objectName) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException, MinioException {
//        try {
//            // 使用Minio服务的URL，端口，Access key和Secret key创建一个MinioClient对象
//            MinioClient minioClient = new MinioClient(host, accessKey, secretKey);
//
//            // 从mybucket中删除myobject。
//            minioClient.removeObject(bucketName, objectName);
//
//        } catch (MinioException e) {
//            e.printStackTrace();
//        }
//    }
//    /**
//     * 批量获取minio文件夹下的所有文件
//     *
//     * @param objectName 文件路径
//     * @return
//     * @throws NoSuchAlgorithmException
//     * @throws IOException
//     * @throws InvalidKeyException
//     * @throws XmlPullParserException
//     * @throws MinioException
//     */
//    public List<String> getFileListMinio(String objectName) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException, MinioException {
//        Iterable<Result<Item>> files = null;
//        List<String> list = new ArrayList<>();
//        try {
//            // 使用Minio服务的URL，端口，Access key和Secret key创建一个MinioClient对象
//            MinioClient minioClient = new MinioClient(host, accessKey, secretKey);
//
//            // 使用putObject上传一个文件到存储桶中。
//            files = minioClient.listObjects(bucketName,objectName);
//            for(Result<Item> result: files){
//                String objName=result.get().objectName();
//                String fileurl = this.getFileMinio(objName);
//                list.add(fileurl);
//            }
//
//        } catch (MinioException e) {
//            e.printStackTrace();
//        }
//        return list;
//    }
//}
